home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Best of Shareware
/
Best of PC Windows Shareware 1.0 - Wayzata Technology (7111) (1993).iso
/
mac
/
DOS
/
UTILITY
/
MXMNU238
/
QUICKNOV.MNU
< prev
next >
Wrap
Text File
|
1992-03-13
|
15KB
|
696 lines
Comment
==========================================================
Copyright 1990-91 by Marc Perkel * All right reserved.
This menu is a sample of a Novell ready menu. You can easilly modify it
to suit your needs.
To add a choice to a menu simply use the AddChoice command
then add the appropiate Onkey statement.
The menu will make the size adjustments accordinaly.
Example:
AddChoice("Print Console",10)
...
...
OnKey Task(10)
PConsole
...
If you want to change the menu's center, pass the XY
coordinates to menu's CenterStretchBox procedure.
Example:
CenterStretchBox("Menu Header",10,10)
This will cause the menu to center at Col 10, Row 10
To control custom features, edit CUSTOM.INC and other INCLUDE Files.
=========================================================
EndComment
;------ Create Variables
Var
PrintQueueChoices
PortChoices
MyServer
AllUsers
NetAddress
Station
UserName
BMess
TitleBackColor
TitleInsideColor
PersonalMenu
FilePicked
KeepUsersInMenu
KeepUsersInMenu = False ;set to True if you want to lock in users
MyServer = NovDefaultServer
Station = Str(NovConnection)
UserName = NovMyLoginName
;------ Read network address
NetAddress = NovStationAddress (NovConnection)
;------ Personalize Your Screen Messages
StatusLineText = 'User: ' + UserName + ' * Server: ' + MyServer
StatusLineText = StatusLineText + ' * Address: ' + NetAddress
if length(StatusLineText) < 64
StatusLineText = StatusLineText + ' * Dos: ' + DosVersionString
endif
MenuTitle = 'Computer Tyme Master Menu'
Comment
==========================================================
If you want to branch to a personal menu then this routine test for the
existence of a menu in the users H: directory with the same name as the
users login name. It then sets an environment variable indicating if it
was found. This keeps the menu fast because the test need only be made
once.
==========================================================
EndComment
;------ Set Personal Menu in Environment Variable if menu exists
PersonalMenu = ReadEnv('PMENU')
if PersonalMenu = ''
PersonalMenu = 'H:' + NovMyLoginName + '.MNU' ;Z: is my home directory
if not ExistFile (PersonalMenu)
PersonalMenu = 'NONE'
endif
SetEnv('PMENU=' + PersonalMenu)
endif
;------ Load menu look and feel include files
Include 'CUSTOM.INC'
Comment
==========================================================
MarxMenu is capable of software metering. This means that it can limit
the number of users of an application to a fixed amount.
OnKey Task (2)
|if Limit('LOTUS',6) then Return ;limit Lotus to 6 Users
CD \PUBLIC\LOTUS
123
Read the METER.INC file for more details.
==========================================================
EndComment
Include 'METER.INC' ;Software Metering
Comment
==========================================================
I have defined a procedure called CenterStretchBox which takes as
parameters a menu title, array of choices, and the XY coordinants
of the center of the window. CenterStretchBox then displays all the
choices and numbers them. This method allows me to update the menu
more quickly.
==========================================================
EndComment
AppendArray(PortChoices,'Lpt1')
AppendArray(PortChoices,'Lpt2')
AppendArray(PortChoices,'Lpt3')
Comment
=================================
In order to add menu choices conditionally you would append the
choices to the end of the array after all the default choices
are set. For Example:
if InGroup("ACCOUNTING")
AddChoice("Payroll Menu",10)
endif
Here is where menus are created.
=================================
EndComment
;----- Main Menu
AddChoice('Accounting',1)
AddChoice('Word Processing',2)
AddChoice('SpreadSheet',3)
AddChoice('DataBase',4)
AddChoice('Graphics',5)
AddChoice('Communication',6)
AddChoice('Publishing',7)
AddChoice('Utilities',20)
if PersonalMenu <> 'NONE' then AddChoice('Personal Menu',25)
CornerStretchBox ('Main Menu',11,6)
OnKey Task(1)
|Error('Put Code for Accounting here.')
OnKey Task(2)
|Error('Put Code for Word Processing here.')
OnKey Task(3)
|Error('Put Code for SpreadSheet here.')
OnKey Task(4)
|Error('Put Code for DataBase here.')
OnKey Task(5)
|Error('Put Code for Graphics here.')
OnKey Task(6)
|Error('Put Code for Communication here.')
OnKey Task(7)
|Error('Put Code for Publishing here.')
OnKey Task(20)
^Util
OnKey Task(25)
|Bat 'Marx ' + PersonalMenu
OnKey ESC
|if NovConsoleOperator or not KeepUsersInMenu
| LeaveMenu
|endif
;----- Util Menu
:Util
AddChoice('Printer Select',1)
AddChoice('Format Disk Menu',2)
AddChoice('Dos Functions',3)
AddChoice('Novell Information',4)
AddChoice('Novell User Options',5)
if NovConsoleOperator
AddChoice('Novell Utilities',6)
AddChoice('Maintainence',7)
AddChoice('Menu Utilities',8)
AddChoice('Command Line',9)
endif
CornerStretchBox ('Utility Menu',43,6)
OnKey Task(1)
|SelectPrintQueue
|Dispose Choices
|LastKey = ' '
OnKey Task(2)
|SelectFormat
|LastKey = ' '
OnKey Task(3)
^Dos
OnKey Task(4)
^NovInfo
OnKey Task(5)
^NovUser
OnKey Task(6)
^NovUtils
OnKey Task(7)
^Maint
OnKey Task(8)
^MenuUtil
OnKey Task(9)
|if ExistOnPath('DOLIST.EXE') > ''
DropTo DoList
|else
| Bat 'DropTo ' + ReadEnv('COMSPEC')
|endif
;----- Dos Menu
:Dos
AddChoice('Directory Master',1)
AddChoice('Pick Directory',2)
AddChoice('Show Directory',3)
AddChoice('Free Space',4)
AddChoice('Memory Map',5)
AddChoice('Device Drivers',6)
CenterStretchBox ('DOS Menu',38,15)
OnKey Task(1)
|if NovConsoleOperator
DropTo DM3
|else
DropTo DMLITE
|endif
OnKey Task(2)
PD
OnKey Task(3)
D/W
OnKey Task(4)
Free
Pause
OnKey Task(5)
RamMap
Pause
OnKey Task(6)
Device
Pause
;----- Novell Utilities Menu
:NovUtils
AddChoice('Session Management',1)
AddChoice('File Management',2)
AddChoice('Volume Information',3)
AddChoice('System Configuration',4)
AddChoice('File Server Monitoring',5)
AddChoice('Print Queue Management',6)
AddChoice('Print Job Configurations',7)
AddChoice('Printer Definitions',8)
AddChoice('Folio Help System',9)
CenterStretchBox ('Novell Utilities',38,15)
OnKey Task(1)
Session
OnKey Task(2)
Filer
OnKey Task(3)
VolInfo
OnKey Task(4)
Syscon
OnKey Task(5)
FConsole
OnKey Task(6)
PConsole
OnKey Task(7)
PrintCon
OnKey Task(8)
PrintDef
OnKey Task(9)
P:Help
;----- Novell Information Menu
:NovInfo
AddChoice('UserList',1)
AddChoice('Drive Map',2)
AddChoice('Current Dir',3)
AddChoice('Directory Rights',4)
AddChoice('List Servers',5)
AddChoice('Who Am I?',6)
AddChoice('Trustees',7)
AddChoice('System Time',8)
AddChoice('ChkVol',9)
AddChoice('Printer Status',10)
CenterStretchBox ('Novell Information',38,15)
OnKey Task(1)
UserList/A
Echo.
Pause
OnKey Task(2)
Map
Echo.
Pause
OnKey Task(3)
NDir
Pause
OnKey Task(4)
Rights
Echo.
Pause
OnKey Task(5)
SList
Echo.
Pause
OnKey Task(6)
WhoAmI/A
Echo.
Pause
OnKey Task(7)
TList
Echo.
Pause
OnKey Task(8)
SysTime
Echo.
Pause
OnKey Task(9)
ChkVol
Echo.
Pause
OnKey Task(10)
Capture Show
Echo.
Pause
;----- Novell User Menu
:NovUser
AddChoice('Change Password',1)
AddChoice('Block Messages',2)
AddChoice('Receive Messages',3)
AddChoice('End Printer Capture',4)
AddChoice('Send a Message',5)
CenterStretchBox ('Novell User Menu',38,15)
OnKey Task(1)
SetPass
OnKey Task(2)
CastOff
OnKey Task(3)
CastOn
OnKey Task(4)
EndCap
OnKey Task(5)
|SendMessage
;----- Maintenence Menu
:Maint
AddChoice('Tape Backup',1)
AddChoice('Delete *.BAK Files',2)
AddChoice('Delete *.MRX Files',3)
CenterStretchBox ('Maintenence Menu',38,15)
OnKey Task(1)
|Error('Put Code for your Tape Backup Software here.')
OnKey Task(2)
Whereis *.BAK /D
OnKey Task(3)
Whereis *.MRX /D
;----- Menu Utilities
:MenuUtil
AddChoice('Edit this Menu',1)
AddChoice('View Include Files',2)
AddChoice('Edit Include Files',3)
AddChoice('View a Menu File',4)
AddChoice('Edit a Menu File',5)
AddChoice('Run a Menu',6)
AddChoice('Load MarxHelp',7)
AddChoice('UnLoad MarxHelp',8)
CenterStretchBox ('Menu Utilities',38,15)
OnKey Task(1)
ME %MenuFileName
OnKey Task(2)
|FilePicked = PickAFile('*.INC','Include Files')
|ViewFile(FilePicked)
OnKey Task(3)
|FilePicked = GetIncludeFile
|if FilePicked > ''
| Bat 'ME ' + FilePicked
|endif
OnKey Task(4)
|FilePicked = PickAFile ('*.MNU','Menus')
|ViewFile(FilePicked)
OnKey Task(5)
|FilePicked = PickAFile ('*.MNU','Menus')
|if FilePicked > ''
| Bat 'ME ' + FilePicked
|endif
OnKey Task(6)
|FilePicked = PickAFile ('*.MNU','Menus')
|if FilePicked > ''
| Bat 'MARX ' + FilePicked
|endif
OnKey Task(7)
|MxCmd = 'MarxHelp'
OnKey Task(8)
|MxCmd = 'MarxHelp /U'
;----- This routines selects a print queue
Procedure SelectPrintQueue
var Queue PrnPort QCmd LocalName
LocalName = '<Local Printer>'
if NumberOfElements(PrintQueueChoices) = 0
NovMyPrintQueues(PrintQueueChoices)
SortArray(PrintQueueChoices)
AppendArray(PrintQueueChoices,LocalName)
endif
Choices = PrintQueueChoices
DrawTheBox(28,11,23,Min(12,NumberOfElements(Choices) + HeightDifference),'Print Queues')
Queue = PickOne(Choices)
if LastKey = Esc then Return
Choices = PortChoices
CenterStretchBox ('Port',38,20)
PrnPort = Ord(ReadKey) - 64
if LastKey = Esc then Return
EraseTopWindow
if Queue = LocalName
NovEndCapture (PrnPort)
else
NovCaptureQueue (PrnPort) = Queue
NovCaptureTimeOut (PrnPort) = 5
endif
EndProc
;----- This routines selects floppy disk format
Procedure SelectFormat
var Ch Message Option
DrawTheBox(20,12,42,4 + HeightDifference,'Format Floppy Disk Menu')
Writeln ' 1 - Format 360 5 - Format /S 360'
Writeln ' 2 - Format 1.2M 6 - Format /S 1.2M'
Writeln ' 3 - Format 720 7 - Format /S 720'
Write ' 4 - Format 1.4M 8 - Format /S 1.4M'
Ch = ReadKey
if Ch = '1'
Message = '360k Format with no System Files.'
Option = '/4'
elseif Ch = '2'
Message = '1.2m Format with no System Files.'
Option = ''
elseif Ch = '3'
Message = '720k Format with no System Files.'
Option = '/N:9/T:80'
elseif Ch = '4'
Message = '1.4m Format with no System Files.'
Option = '/N:18/T:80'
elseif Ch = '5'
Message = '360k Format with System Files.'
Option = '/4/S'
elseif Ch = '6'
Message = '1.2m Format with System Files.'
Option = '/S'
elseif Ch = '7'
Message = '720k Format with System Files.'
Option = '/N:9/T:80/S'
elseif Ch = '8'
Message = '1.4m Format with System Files.'
Option = '/N:18/T:80/S'
else
Return
endif
if DosVersionString >= '5.00'
Option = Option + '/U' ;unconditional
Option = Option + '/V:DOS' ;automatically adds volume label
endif
DrawTheBox(46,18,11,2 + HeightDifference,'Drive')
Writeln ' A:'
Write ' B:'
Ch = ReadKey
if Ch = Esc then Return
ExecFormat(Ch,Option,Message)
EndProc
;----- Execute FORMAT in a DOS Window
Procedure ExecFormat (Drv,Option,Message)
var FormatProg
FormatProg = ExistOnPath('FORMAT.EXE')
if FormatProg = '' then FormatProg = ExistOnPath('FORMAT.COM')
if FormatProg = ''
Error('FORMAT program not Found!')
Return
endif
BoxHeader = ' Formatting Drive ' + Drv + ': ' + Message + ' '
Shadow Off
DrawBox 1 4 80 21
Window 4 5 74 19
Writeln
ExecProg (FormatProg + ' ' + Drv + ': ' + Option)
EraseTopWindow
EndProc
;----- Sends a novell message
Procedure SendMessage
var Choice Message
Choice = PickUser('Send message To')
if Choice = '' then Return
Message = ReadTextLine('Message:','',0,21)
if LastKey = Esc then Return
ClearScreen
TextColor MenuHeaderFG MenuBG
Write ' Sending ... '
ClearScreenFirst Off
ExecProg ('Send "' + Message + '" to ' + Choice + '>nul')
EndProc
;----- Select Include File
Procedure GetIncludeFile
var IncPath
IncPath = PathPart(ExistOnPath('CUSTOM.INC'))
IncPath = PickAFile(CleanFileName(IncPath + '\*.INC'),'Include Files')
if IncPath = '' then Return ''
DelFile(ForceExtension(%MenuFileName,'MRX'))
Return IncPath
EndProc
;----- Reads a list of all users on the system
Procedure ReadUsers
if NumberOfElements(AllUsers) > 0 then Return
NovUsersLoggedIn(AllUsers)
SortArray(AllUsers)
EndProc
Procedure PickUser (Message)
var MaxSize
ReadUsers
MaxSize = Min(15,NumberOfElements(AllUsers))
DrawTheBox(46,12 - (MaxSize / 2),20,MaxSize + HeightDifference,Message)
Return PickOne(AllUsers)
EndProc
;----- Execute a program in a window
Procedure ExecProg (Prog)
TextColor MenuHeaderFG MenuBG
Cursor Off
DosWindow
Execute Prog
EndProc
;----- View a File
Procedure ViewFile (Name)
if Name = '' then Return
BoxHeader = ' Viewing ' + Name + ' '
Shadow Off
DrawBox 1 4 80 21
TextColor MenuHeaderFG MenuBG
ViewTextFile Name
EndProc
Procedure PickAFile (Mask,Message)
var Files Choice MaxSize
ReadDirectory(Mask,Files)
MaxSize = Min(15,NumberOfElements(Files))
if MaxSize = 0
Error('No Choices!')
Return ''
endif
DrawTheBox(46,12 - (MaxSize / 2),20,MaxSize + HeightDifference,Message)
Choice = PickOne(Files)
Return Choice
EndProc
;----- Display Error and Wait for a Key
Procedure Error (Err)
var Ch
BoxHeader = ' Error * Press any Key '
DrawBox 11 19 Max(27,length(Err) + 4) 3
Cursor Off
UseArrows Off
TextColor MenuHeaderFG MenuBG
WriteCenter Err
Write Char(7)
Ch = ReadKey
EraseTopWindow
EndProc